如何实现检测apt攻击
APT攻击检测思路:
检测伪装进程伪装
根据进程名称与进程内部名称、以及进程路径的对比,来检测进程是否伪装
异常进程链检测
根据父子进程来发现异常,比如winword等文档型程序启动mshta进程、Spoolsv启动powershell。
基于加载的DLL文件
扫描进程中存在的非正常的dll文件,且着重关注一些DLL文件的加载,比如scrobj.dll被加载到regsvr32进程中,则可能存在regsvr32执行sct文件的情况,需要对该进程的行为进行追踪;关注DLL的来源,比如反向dll注入,dll来源于网络。
环境变量检测
PATH和PATHEXT中写入了可疑路径,从而实现DLL劫持;
特殊环境变量检测:COR_PROFILER环境变量的设置,检测该环境变量指向的COM组件中是否存在恶意dll文件,从而发现CLR劫持
路径一致性检测
分别获取命令行路径和真实路径,两者不同说明有路径假冒行为,两个路径分别是WindowTitle(窗口路径)和CommandLine(命令行路径):
操作对象检测
某些特种木马为了防止重复种植,一般会在操作的Mutants、File、Token等类型的对象上设置其特征。比如ByShell病毒在进程创建了Mutant类型的对象ByShell_Event_Wait
文件签名检测
检测PE文件签名或DLL文件签名;
DLL隐藏检测
DLL隐藏的方式有两种,一是将DLL从加载顺序链表中断开(检测方式:加载的DLL-卸载的DLL != 目前DLL)、二是修改_LDR_DATA_TABLE_ENTRY结构体中的DLL路径和DLL名称(检测方式:对比DLL路径和映射文件路径)。
远程线程注入检测
注入前DLL存在于磁盘上,可检测DLL文件是否为恶意文件;还可以检测CreateRemoteThread等函数的调用。
对抗隐写术
检测执行的命令的文件来源,比如powershell提取并执行图片中嵌入的代码,则检测powershell执行的脚本的来源;
反弹shell检测
反弹shell的本质是输入输出重定向,因此可通过cmd、powershell等进程的输入来源进行检测。比如cmd的父进程联网。
无文件攻击检测
基于命令行的检测,检测各种下载执行的命令行;
基于父子进程的检测,检测异常进程链;
基于加载或执行的文件来源的检测,检测进程加载或执行的文件是否来源于网络。
持久化攻击检测
检测敏感注册表项中的命令或扫描其执行的程序、扫描计划任务执行的文件、扫描启动目录中的文件、扫描自启动服务对应的程序等。
系统的安全配置检测
防火墙开启状态检测;
UAC开启状态检测;
是否禁止显示隐藏文件;
安全模式是否被禁用或破坏;
控制面板启用状态检测;
OFFICE宏安全设置检测
CMD、任务管理器、注册表编辑器等工具的启用状态检测;
RDP设置检测;